/**
 * @file HttpResponse.h
 * @brief
 * 对HTTP响应的报文进行封包和拆包，HTTP响应的报文主要分为三部分：状态行、响应头部、响应包体
 * HTTP响应的报文格式如下：
 * -------------------------------------------------------------------------------
 * 协议版本 空格 状态码 空格 状态码描述 回车符 换行符         ---> 状态行
 * 头部字段名称 :(冒号) 值 回车符 换行符                   -|
 *              ......                                   -|---> 响应头部
 * 头部字段名称 :(冒号) 值 回车符 换行符                   -|
 *           回车符 换行符
 * 响应包体                                                ---> 响应包体
 * -------------------------------------------------------------------------------
 *
 * @author Wang haoyu
 * @email 136046355@qq.com
 */
#ifndef __HTTPRESPONSE_H__
#define __HTTPRESPONSE_H__

#include <string>
#include <map>

class HttpResponse
{
  public:
    std::string line_;
    std::string body_;
    std::map<std::string, std::string> headers_;
    bool isReadAll_;
    uint32_t readIndex_;
    uint32_t alreadyRead_;
    uint32_t contentLength_;

  public:
    HttpResponse();
    ~HttpResponse();

    bool parseResponseData(std::string unParseData);
    bool appendBody(std::string residueBuffer);

  private:
    void parseHeader(std::string &header);
};

#endif // __HTTPRESPONSE_H__